package com.dayatang.hrm.compensation.service;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.dayatang.hrm.compensation.domain.FiscalPeriod;
import com.dayatang.hrm.compensation.domain.PayRoll;
import com.dayatang.hrm.compensation.domain.SalaryAccountSuite;
import com.dayatang.hrm.compensation.domain.SalaryItemArchive;
import com.dayatang.hrm.staffing.domain.Employee;

public interface CompensationCalculateService extends Serializable {

	/**
	 * 生成薪水册
	 * 
	 * @param salaryAccountSuite
	 * @param fiscalPeriod
	 * @return
	 */
	public PayRoll creatPayRoll(SalaryAccountSuite salaryAccountSuite,
			FiscalPeriod fiscalPeriod);

	/**
	 * 指定薪水册，计算其中某个员工的薪资项目档案集合（包含值）
	 * 
	 * @param payRoll
	 * @param validateEmployee
	 *            是否验证员工是否属于该薪水册
	 * @param setOfEmpParamsMap
	 *            员工-参与计算参数的键值对
	 * @return
	 */
	public Map<Employee, List<SalaryItemArchive>> calculateEmployeeSalaryItemArchivesInPayRoll(
			PayRoll payRoll, boolean validateEmployee,
			Map<Employee, List<Object>> empParamsMap);

	/**
	 * 指定会计期间，计算某个员工薪资计算项目的值
	 * 
	 * @param employee
	 * @param fiscalPeriod
	 * @param calItem
	 * @param calculateDate
	 *            计算时间（按照这个时间获取对应公式版本）
	 * @return
	 */
	// public Value calculateSalaryCalculateItem(Employee employee,
	// FiscalPeriod fiscalPeriod, SalaryCalculateItem calItem,
	// Date calculateDate);
}
